home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / tools / pcd2_126 / pcd2_126.lzh / CHKPCD.HAS next >
Text File  |  1996-06-25  |  3KB  |  143 lines

  1.     .include    doscall.mac
  2. *
  3. * 指定ファイルがPhoto-CDファイルかどうか審査する
  4. *
  5. * in d0.w=FileHandle
  6. * out bit0=192*128
  7. * out bit1=384*256
  8. * out bit2=768*512
  9. * out bit3=1536*1024
  10. * out bit4=3072*2048
  11. * out bit15=overview data(7-0bit max num)
  12. * out bit31=no pictures
  13.     .xdef    ChkPCD
  14. *
  15. * 画像位置までSEEKする
  16. *
  17. * in d0.w=FileHandle
  18. * in d1.w=IMAGE NUMBER(0=192*128,1=384*256,2=768*512)
  19. *
  20.     .xdef    Seek_PCD
  21.  
  22. ChkPCD:
  23.     movem.l    d1/d7,-(sp)
  24.     move.w    d0,d7
  25.     moveq.l    #0,d1
  26.     move.w    #0,-(sp)
  27.     move.l    #0,-(sp)
  28.     move.w    d7,-(sp)
  29.     DOS    _SEEK
  30.     addq.l    #8,sp
  31.  
  32.     move.l    #16,-(sp)
  33.     pea    work
  34.     move.w    d7,-(sp)
  35.     DOS    _READ
  36.     lea.l    (10,sp),sp
  37.     cmp.l    #'PCD_',work
  38.     bne    ChkPCD_2
  39.     cmp.l    #'OPA'*$100,work+4
  40.     beq    OverView
  41. ChkPCD_2:
  42.     move.w    #0,-(sp)
  43.     move.l    #$800,-(sp)
  44.     move.w    d7,-(sp)
  45.     DOS    _SEEK
  46.     addq.l    #8,sp
  47.  
  48.     move.l    #8,-(sp)
  49.     pea    work
  50.     move.w    d7,-(sp)
  51.     DOS    _READ
  52.     lea.l    (10,sp),sp
  53.     cmp.l    #'PCD_',work
  54.     bne    NoPicture
  55.     cmp.l    #'IPI'*$100,work+4
  56.     bne    NoPicture
  57.  
  58.     move.w    #0,-(sp)
  59.     move.l    #$e00,-(sp)
  60.     move.w    d7,-(sp)
  61.     DOS    _SEEK
  62.     addq.l    #8,sp
  63.  
  64.     move.l    #512,-(sp)
  65.     pea    work
  66.     move.w    d7,-(sp)
  67.     DOS    _READ
  68.     lea.l    (10,sp),sp
  69.     tst.b    (work+9)
  70.     beq    @f
  71.     bset.l    #0,d1
  72. @@:
  73.     move.l    #512,-(sp)
  74.     pea    work
  75.     move.w    d7,-(sp)
  76.     DOS    _READ
  77.     tst.b    (work+9)
  78.     beq    @f
  79.     bset.l    #1,d1
  80. @@:
  81.     DOS    _READ
  82.     tst.b    (work+9)
  83.     beq    @f
  84.     bset.l    #2,d1
  85. @@:
  86.     DOS    _READ
  87.     tst.b    (work+9)
  88.     beq    @f
  89.     bset.l    #3,d1
  90. @@:
  91.     DOS    _READ
  92.     lea.l    (10,sp),sp
  93.     tst.b    (work+9)
  94.     beq    @f
  95.     bset.l    #4,d1
  96. @@:
  97.     move.l    d1,d0
  98.     movem.l    (sp)+,d1/d7
  99.     rts
  100.  
  101. NoPicture:
  102.     moveq.l    #-1,d0
  103.     movem.l    (sp)+,d1/d7
  104.     rts
  105. OverView:
  106.     move.b    (work+$a),d0
  107.     lsl.w    #8,d0
  108.     move.b    (work+$b),d0
  109.     bset.l    #15,d0
  110.     movem.l    (sp)+,d1/d7
  111.     rts
  112.  
  113.     .bss
  114.     .align    4
  115. work:    .ds.b    512        * ほとんどダミー
  116.  
  117.     .text
  118. *------------------------------
  119. * 画像位置までシークする。
  120. *------------------------------
  121.     .align    4
  122. Seek_PCD:
  123.     movem.l    d0-d1,-(sp)
  124.     move.w    #0,-(sp)
  125.     add.w    d1,d1
  126.     add.w    d1,d1
  127.     move.l    (@f,pc,d1.w),-(sp)
  128.     move.w    d0,-(sp)
  129.     DOS    _SEEK            * エラーを検出していないとは・・・!
  130.     addq.l    #8,sp
  131.     movem.l    (sp)+,d0-d1
  132.     rts
  133.     .align    4
  134. @@:    .dc.l    $2000,$b800,$30000    * ,$30000,$30000
  135. *
  136. * 4BASE以上のデータはまずBASEデータを展開しなくてはならないので、
  137. * 初期シーク位置は同じになる。それから先のハフマンデータは
  138. * 4BASE、16BASEの順に展開することになるのだが、
  139. * メモリ不足(建て前)とプログラム技術(本音)によって未サポート
  140. * 64BASE以上を展開したいのなら別ファイルから読み込むことになる(らしい)
  141. * プロフォトCDマスターを持っていないのでよく分からない。
  142. *
  143.